package com.juli.school.app.controller;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.juli.school.dao.entity.Back;
import com.juli.school.dao.entity.Contact;
import com.juli.school.dao.entity.Gift;
import com.juli.school.dao.entity.Point;
import com.juli.school.dao.entity.Pub;
import com.juli.school.dao.entity.Stu;
import com.juli.school.dao.entity.Ver;
import com.juli.school.service.bo.ContactBo;
import com.juli.school.service.bo.PointBo;
import com.juli.school.service.bo.StuBo;
import com.juli.school.service.impl.BackService;
import com.juli.school.service.impl.ContactService;
import com.juli.school.service.impl.ErService;
import com.juli.school.service.impl.FavService;
import com.juli.school.service.impl.GiftService;
import com.juli.school.service.impl.PointService;
import com.juli.school.service.impl.PubService;
import com.juli.school.service.impl.StuService;
import com.juli.school.service.impl.VerService;
import com.juli.school.utils.core.model.CommonResp;
import com.juli.school.utils.core.model.ListResp;
import com.juli.school.utils.core.model.PageResp;

/**
 * 我的模块
 * 
 * @author wjp
 * @date 2018年1月11日
 *
 */
@RequestMapping(value = "/my")
@Controller
public class MyControoller {

	@Resource
	PubService pubService;
	@Resource
	ErService erService;
	@Resource
	FavService favService;
	@Resource
	StuService stuService;
	@Resource
	ContactService contactService;
	@Resource
	BackService backService;
	@Resource
	GiftService giftService;
	@Resource
	VerService verService;
	@Resource
	PointService pointService;

	/**
	 * 我的发布列表
	 */
	@RequestMapping("/myRelease")
	@ResponseBody
	public CommonResp<ListResp<Pub>> myRelease(Pub req) {
		return pubService.getMyListPage(req);
	}

	/**
	 * @Description： 我的收藏1/我的点赞2/我的喜欢3
	 * 
	 * @author: hantao
	 * @since: 2018年1月13日 下午2:38:58
	 */
	@RequestMapping("favList")
	@ResponseBody
	public CommonResp<ListResp<Pub>> favList(Pub req, Integer favKind) {
		return pubService.getMyFavList(req, favKind);
	}

	/**
	 * @Description： 我的订单
	 * 
	 * @author: hantao
	 * @throws Exception
	 * @since: 2018年1月17日 下午9:39:22
	 */
	@RequestMapping("erList")
	@ResponseBody
	public CommonResp<ListResp<Pub>> erList(Pub req, String kind) throws Exception {
		// kind判断是查找买到的还是卖出去的,1代表买到的,2代表卖出的
		return erService.getMyErList(req, kind);
	}

	@RequestMapping("stuDetail")
	@ResponseBody
	public CommonResp<Stu> stuDetail(Pub req) throws Exception {
		return pubService.stuDetail(req);
	}

	/**
	 * @Description: 学生认证资料提交
	 * @author: wjp
	 * @date: 2018年1月20日下午3:29:53
	 */
	@RequestMapping("stuIdAut")
	@ResponseBody
	public CommonResp<String> stuIdAut(StuBo stuBo) {
		return stuService.updateStu(stuBo);
	}

	/**
	 * @Description: 获取我申请的社团集合
	 * @author: wjp
	 * @date: 2018年1月29日下午9:40:53
	 */
	@RequestMapping("groupList")
	@ResponseBody
	public CommonResp<ListResp<Pub>> groupList(Pub req) {
		return pubService.groupList(req);
	}

	/**
	 * @Description: 获取联系方式列表,type：1客服，2商户。status 为空默认加载值为：启用
	 * @author: wjp
	 * @date: 2018年1月29日下午9:40:29
	 */
	@RequestMapping("getContactInformation")
	@ResponseBody
	public CommonResp<List<ContactBo>> getContactInformation(Contact contact) {
		return contactService.list(contact);
	}

	/**
	 * @Description: 意见反馈保存
	 * @author: wjp
	 * @date: 2018年1月29日下午10:12:34
	 */
	@RequestMapping("addBack")
	@ResponseBody
	public CommonResp<String> addBack(Back back) {
		return backService.add(back);
	}

	/**
	 * @Description: 获取积分兑换礼品列表:若 pageNo，pageSize为空，默认为0和10
	 * @author: wjp
	 * @date: 2018年1月31日下午9:53:57
	 */
	@RequestMapping("getGiftList")
	@ResponseBody
	public CommonResp<PageResp<Gift>> getGiftList(Gift gift, Integer pageNo, Integer pageSize) {
		return giftService.listPage(gift, pageNo, pageSize);
	}

	/**
	 * @Description: 获取指定学生剩余积分数量
	 * @author: wjp
	 * @date: 2018年1月31日下午10:20:23
	 */
	@RequestMapping("getStuPointSum")
	@ResponseBody
	public CommonResp<PointBo> getStuPointSum(String stuId) {
		return pointService.getPointsSum(stuId);
	}

	/**
	 * @Description: 获取指定学生积分历史记录:若 pageNo，pageSize为空，默认为0和10
	 * @author: wjp
	 * @date: 2018年1月31日下午10:20:23
	 */
	@RequestMapping("getStuPointHistory")
	@ResponseBody
	public CommonResp<PageResp<PointBo>> getStuPointHistory(Point point, Integer pageNo, Integer pageSize) {
		return pointService.listPage(point, pageNo, pageSize);
	}
	
	/**  
	 * @Description：荣誉小图标
	 * @author: hantao
	 * @since: 2018年2月7日 下午8:39:52  
	 */
	@RequestMapping("honor")
	@ResponseBody
	public CommonResp<Pub> getHonor(Pub pub){
		return pubService.getHonor(pub);
	}
	
	/**
	 * @Description: 积分变动（增加积分或扣除积分，需要写明原因）
	 * @author: wjp
	 * @date: 2018年3月20日下午1:32:59 
	 */
	@RequestMapping("stuIntegraluChange")
	@ResponseBody
	public CommonResp<String> stuIntegraluChange(Point point){
		return pointService.add(point);
	}
	
	/**
	 * @Description: 查看系统版本号
	 * @author: wjp
	 * @date: 2018年3月31日下午5:10:42 
	 */
	@RequestMapping("ver")
	@ResponseBody
	public CommonResp<Ver> getVer(Integer os){
		return verService.getVer(os);
	}
}
